AnĂ¡lisis de Series Temporales

IOT Analytics

PreparaciĂ³n para analizar los datos. Series temporales

Objetivo

ProyecciĂ³n del consumo energĂ©tico a travĂ©s de series temporales.

Procedimiento

Estudiaremos los datos de consumo energético correspondientes a los años 2007 a 2009 a través de series temporales.

Haremos proyecciĂ³n de futuro para el año 2010 y compararemos los resultados con los datos reales de este Ăºltimo año (serie real).

Plot POA

Vamos a analizar la serie temporal del submedidor 3, aire acondicionado y termo elĂ©ctrico. Vamos a extraer 52 observaciones opr año, esto es igual a una observaciĂ³n diaria. Lunes a las 20h. Años 2007, 2008 y 2009

EvoluciĂ³n mensual del consumo. Años 2007-2009

Vamos a representar la serie por meses para cada submedidor y tambien para la energĂ­a global co granularidad mensual. En este caso, la frecuencia serĂ¡ 12, tenemos una observaciĂ³n por mes para los años 2007,8 y 2009.

Parece que los datos tienen estacionariedad (movimientos que se repiten cada año), esto ocurre para todas las variables.

EvoluciĂ³n diaria del consumo por meses

En este caso, crearemos una serie para cada mes, ya que la frecuencia de los datos no serĂ¡ la misma, al tener cada mes un nĂºmero de dĂ­as diferente.

Mes de Enero

Parece que no existen muchos patrones que nos podrĂ­an ayudar a hacer predicciones, no serĂ­an muy fiables. (grĂ¡fica muelle)

Mes de Febrero

Mes de Marzo

EvoluciĂ³n semanal del consumo. Años 2007-2009

Vamos a representar la serie por meses para cada submedidor y tambien para la energĂ­a global co granularidad mensual. En este caso, la frecuencia serĂ¡ 12, tenemos una observaciĂ³n por mes para los años 2007,8 y 2009.

Muelle

Forecasting antes de descomponer la serie

Vamos a plicar regresiĂ³n lineal a cada serie temporal, y veremos el valor de \(R^2\) y del error cuadrĂ¡tico medio.

EvoluciĂ³n mensual del consumo. Años 2007-2009

Modelo


Call:
tslm(formula = tsSM3_070809weekly ~ trend + season)

Residuals:
     Min       1Q   Median       3Q      Max 
-14.0000  -5.1012  -0.3333   1.2321  20.5654 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 10.10900    4.09735   2.467   0.0152 *
trend       -0.01087    0.01462  -0.744   0.4586  
season2     -3.52184    6.01621  -0.585   0.5596  
season3     -3.84430    6.01534  -0.639   0.5242  
season4     -9.50009    6.01451  -1.580   0.1173  
season5     -3.82255    6.01371  -0.636   0.5264  
season6      2.18832    6.01294   0.364   0.7166  
season7     -4.13414    6.01222  -0.688   0.4932  
season8     -9.45660    6.01152  -1.573   0.1187  
season9     -3.77906    6.01086  -0.629   0.5309  
season10    -3.76818    6.01024  -0.627   0.5321  
season11     1.90936    6.00966   0.318   0.7513  
season12    -3.41310    6.00910  -0.568   0.5713  
season13    -9.40223    6.00859  -1.565   0.1207  
season14    -9.39136    6.00811  -1.563   0.1211  
season15    -3.04715    6.00766  -0.507   0.6131  
 [ reached getOption("max.print") -- omitted 37 rows ]
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 7.863 on 104 degrees of freedom
Multiple R-squared:  0.2639,    Adjusted R-squared:  -0.1042 
F-statistic: 0.7169 on 52 and 104 DF,  p-value: 0.9077

Resultados:

  • Valor del coeficiente de determinaciĂ³n: 0.2639. Es un valor muy bajo, el modelo Ăºnicamente explica el 28% de la variabilidad total.

  • No hay coeficientes significativamente no nulos (p.valores > 0.05). El modelo los supone todos nulos (significativamente)

PredicciĂ³n IC

PredicciĂ³n para los prĂ³ximos 20 dĂ­as

HabĂ­a predicciones negativas, esto es muy grave. No puede haber un consumo negativo de energĂ­a.

EvoluciĂ³n diaria del consumo por meses

Modelo


Call:
tslm(formula = tsSM3_DiariaEnero ~ trend + season)

Residuals:
    Min      1Q  Median      3Q     Max 
-5223.2 -1643.5  -128.2  1968.5  6090.7 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 7359.3708  1811.1381   4.063  0.00014 ***
trend         -0.8762    12.5325  -0.070  0.94449    
season2     1941.2095  2497.7856   0.777  0.44006    
season3     -337.9143  2497.8799  -0.135  0.89284    
season4     1701.2952  2498.0371   0.681  0.49842    
season5     2241.8380  2498.2572   0.897  0.37305    
season6     1754.3809  2498.5401   0.702  0.48525    
season7     3264.9237  2498.8858   1.307  0.19627    
season8     5867.7999  2499.2943   2.348  0.02215 *  
season9     2021.6760  2499.7656   0.809  0.42180    
season10    3640.5522  2500.2996   1.456  0.15051    
season11    1613.7617  2500.8963   0.645  0.52117    
season12    2887.3045  2501.5556   1.154  0.25292    
season13    4624.5140  2502.2776   1.848  0.06943 .  
season14    3936.0569  2503.0621   1.572  0.12101    
season15    5955.9331  2503.9090   2.379  0.02052 *  
 [ reached getOption("max.print") -- omitted 16 rows ]
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3059 on 61 degrees of freedom
Multiple R-squared:  0.3269,    Adjusted R-squared:  -0.01514 
F-statistic: 0.9557 on 31 and 61 DF,  p-value: 0.5438

Resultados:

  • Valor del coeficiente de determinaciĂ³n: 0.3269. Es un valor muy bajo, el modelo Ăºnicamente explica el 28% de la variabilidad total.

  • Solo hay tres coeficientes significativamente no nulos

PredicciĂ³n IC

EvoluciĂ³n semanal del consumo. Años 2007-2009

Submetering 1

Modelo

Call:
tslm(formula = tsSM1_Semanal ~ trend + season)

Residuals:
   Min     1Q Median     3Q    Max 
-11708  -2978   1845   4714   7123 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  59656.6     4512.2  13.221 6.48e-09 ***
trend         -508.6      263.8  -1.928  0.07593 .  
season2      12293.0     5646.7   2.177  0.04850 *  
season3      23297.9     5665.1   4.113  0.00122 ** 
season4       7005.5     5695.7   1.230  0.24051    
season5      13062.8     5738.3   2.276  0.04039 *  
season6      81428.1     5792.6  14.057 3.07e-09 ***
season7      91174.1     5858.3  15.563 8.75e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6908 on 13 degrees of freedom
Multiple R-squared:  0.975, Adjusted R-squared:  0.9616 
F-statistic: 72.49 on 7 and 13 DF,  p-value: 2.122e-09

Resultados:

  • Valor del coeficiente de determinaciĂ³n: 0.04277. Es un valor extremadamente bajo, el modelo Ăºnicamente explica el 4.8% de la variabilidad total. Las predicciones no serĂ¡n nada fiables

  • Solo hay un coeficiente significativamente no nulo

PredicciĂ³n IC

Predicciones nada fiables, ademĂ¡s de los gigantes IC

Submetering 2

Modelo

Call:
tslm(formula = tsSM2_Semanal ~ trend + season)

Residuals:
   Min     1Q Median     3Q    Max 
-34037 -13452  -3470   8762  38539 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  88194.9    15111.4   5.836 5.82e-05 ***
trend        -2641.6      883.3  -2.991 0.010427 *  
season2      43786.9    18910.7   2.315 0.037565 *  
season3      73582.1    18972.5   3.878 0.001903 ** 
season4      -4120.0    19075.0  -0.216 0.832350    
season5      28106.0    19217.7   1.463 0.167355    
season6      64649.2    19399.5   3.333 0.005399 ** 
season7      83987.4    19619.5   4.281 0.000895 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 23140 on 13 degrees of freedom
Multiple R-squared:  0.7717,    Adjusted R-squared:  0.6487 
F-statistic: 6.276 on 7 and 13 DF,  p-value: 0.002282

Resultados:

  • Valor del coeficiente de determinaciĂ³n: 0.7717. No es un mal ajuste
PredicciĂ³n IC

Predicciones nada fiables, ademĂ¡s de los gigantes IC

Submetering 3

Modelo

Call:
tslm(formula = tsSM3_Semanal ~ trend + season)

Residuals:
   Min     1Q Median     3Q    Max 
-50070 -20032  -1703  18539  49320 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   410909      20033  20.511 2.76e-11 ***
trend           5485       1171   4.684 0.000427 ***
season2         4110      25070   0.164 0.872309    
season3        -5833      25152  -0.232 0.820231    
season4       -45960      25288  -1.817 0.092260 .  
season5        16778      25477   0.659 0.521682    
season6        36018      25718   1.401 0.184776    
season7       -48786      26010  -1.876 0.083330 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 30670 on 13 degrees of freedom
Multiple R-squared:  0.7601,    Adjusted R-squared:  0.6309 
F-statistic: 5.884 on 7 and 13 DF,  p-value: 0.00305

Resultados:

  • Valor del coeficiente de determinaciĂ³n: 0.7601.

  • Solo hay dos coeficientes significativamente no nulos

PredicciĂ³n IC

Predicciones nada fiables, ademĂ¡s de los gigantes IC

ComparaciĂ³n de los coeficientes de cada modelo

   Submedidor     RMSE      R2
1      Cocina 24509.62 0.04277
2    Lavadero 22414.30 0.18390
3 AC y TermoE 65773.10 0.04866

Forecasting descomponiendo la serie (asĂ­ ok)

Descomponer: quitar tendencia

DescomposiciĂ³n y visualizaciĂ³n

POA

         Length Class  Mode     
x        157    ts     numeric  
seasonal 157    ts     numeric  
trend    157    ts     numeric  
random   157    ts     numeric  
figure    52    -none- numeric  
type       1    -none- character

Observamos una fuerte dependencia de la componente estacional.

EvoluciĂ³n semanal del consumo. Años 2007-2009

Submetering 1

         Length Class  Mode     
x        21     ts     numeric  
seasonal 21     ts     numeric  
trend    21     ts     numeric  
random   21     ts     numeric  
figure    7     -none- numeric  
type      1     -none- character

Componente estacional muy fuerte, tendencia no.

Submetering 2

         Length Class  Mode     
x        21     ts     numeric  
seasonal 21     ts     numeric  
trend    21     ts     numeric  
random   21     ts     numeric  
figure    7     -none- numeric  
type      1     -none- character
Submetering 3

         Length Class  Mode     
x        21     ts     numeric  
seasonal 21     ts     numeric  
trend    21     ts     numeric  
random   21     ts     numeric  
figure    7     -none- numeric  
type      1     -none- character

EvoluciĂ³n mensual del consumo. Años 2007-2009

Submetering 1

         Length Class  Mode     
x        36     ts     numeric  
seasonal 36     ts     numeric  
trend    36     ts     numeric  
random   36     ts     numeric  
figure   12     -none- numeric  
type      1     -none- character

Componente estacional muy fuerte, tendencia no.

Submetering 2

         Length Class  Mode     
x        36     ts     numeric  
seasonal 36     ts     numeric  
trend    36     ts     numeric  
random   36     ts     numeric  
figure   12     -none- numeric  
type      1     -none- character
Submetering 3

         Length Class  Mode     
x        36     ts     numeric  
seasonal 36     ts     numeric  
trend    36     ts     numeric  
random   36     ts     numeric  
figure   12     -none- numeric  
type      1     -none- character

EvoluciĂ³n diaria del consumo por meses para los años 2007-2009

Submetering 1

         Length Class  Mode     
x        93     ts     numeric  
seasonal 93     ts     numeric  
trend    93     ts     numeric  
random   93     ts     numeric  
figure   31     -none- numeric  
type      1     -none- character

Tendencia creciente, parece que no hay mucha estacionalidad.

Submetering 2

         Length Class  Mode     
x        93     ts     numeric  
seasonal 93     ts     numeric  
trend    93     ts     numeric  
random   93     ts     numeric  
figure   31     -none- numeric  
type      1     -none- character
Submetering 3

         Length Class  Mode     
x        93     ts     numeric  
seasonal 93     ts     numeric  
trend    93     ts     numeric  
random   93     ts     numeric  
figure   31     -none- numeric  
type      1     -none- character

PredicciĂ³n con Holt-Winters (suavizado exponencial)

POA

AĂºn parece que hay estacionalidad, pero la escala es tan pequeña que es prĂ¡cticamente nula, por tanto, asumimos estacionalidad.

Una vez que hemos eliminado la compoenente estacional, podemos hacer predicciones

Suavizado exponencial de HoltWinters

PronĂ³stico de HoltWinters

Vamos a predecir las prĂ³ximas 25 observaciones.

La predicciĂ³n es diferente que sin desestacionalizar la serie.

EvoluciĂ³n semanal del consumo. Años 2007-2009

Cocina

Parece un muelle.

Suavizado exponencial de HoltWinters

PronĂ³stico de HoltWinters

Vamos a predecir las prĂ³ximas 25 observaciones.

La predicciĂ³n es diferente que sin desestacionalizar la serie.

Lavadero

Parece un muelle.

Suavizado exponencial de HoltWinters

PronĂ³stico de HoltWinters

Vamos a predecir las prĂ³ximas 25 observaciones.

AnĂ¡lisis de series temporales con metodologĂ­a Box-Jenkis

Paso 1. Lectura y representaciĂ³n grĂ¡fica de los datos

Paso 2. Transformaciones para que la varianza sea estable en el tiempo

[1] 2
[1] -1.1  2.0

Usando la familia de transformaciones BoxCox, nos sugiere un valor de lambda = 2. El valor 1 (no transformar) estĂ¡ en el intervalo, al igual que el 0 (transformaciĂ³n logarĂ­tmica)

No transformamos los datos.

Ahora parece que las oscilaciones no crecen con el tiempo.

Paso 3. Transformaciones para que la media sea estable en el tiempo

[1] 1
[1] 0

Diferencia regular:

[1] 0

Paso 4. Contrastar la estacionariedad

Test de raiz unitaria.


    Augmented Dickey-Fuller Test

data:  tsSM3_SemanalDif
Dickey-Fuller = -6.2783, Lag order = 2, p-value = 0.01
alternative hypothesis: stationary

No existen evidencias significativas para afirmar que los datos no sean estacionarios. La media es estable en el tiempo.

Paso 5. Identificar la estructura ARIMA

MA(0) y AR(0).

Pasos 6 y 7. EstimaciĂ³n de parĂ¡metros y diagnĂ³stico

modelo ARIMA(0,1,0)xARIMA(0,1,0)


Call:
arima(x = tsSM3_Semanal, order = c(0, 1, 0), seasonal = list(order = c(0, 0, 
    0), period = 7))


sigma^2 estimated as 3.489e+09:  log likelihood = -248.11,  aic = 496.21


    Ljung-Box test

data:  Residuals from ARIMA(0,1,0)
Q* = 11.143, df = 4, p-value = 0.025

Model df: 0.   Total lags used: 4

Pasa la diagnosis: p-value = 0.025. El modelo es vĂ¡lido.

Series: tsSM3_Semanal 
ARIMA(3,1,0) with drift 

Coefficients:
          ar1      ar2      ar3     drift
      -1.2341  -1.1548  -0.6579  6092.903
s.e.   0.2171   0.1892   0.2114  1912.826

sigma^2 = 1.26e+09:  log likelihood = -237.16
AIC=484.31   AICc=488.6   BIC=489.29

Modelo propuesto: ARIMA(3,1,0)

aicAutoArima = 496.21 AICModelo1=484.31


    Ljung-Box test

data:  Residuals from ARIMA(3,1,0) with drift
Q* = 2.8112, df = 3, p-value = 0.4217

Model df: 4.   Total lags used: 7

No pasa la diagnosis, el modelo no es vĂ¡lido.

Nos quedamos con el modelo 1.

Paso 8. PredicciĂ³n de los resultados

AnĂ¡lisis de series temporales con metodologĂ­a Box-Jenkis

Paso 1. Lectura y representaciĂ³n grĂ¡fica de los datos

Paso 2. Transformaciones para que la varianza sea estable en el tiempo

$lambda
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
[20] 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0

$loglike
 [1] 60.59893 61.94022 63.21125 64.41278 65.54554 66.61042 67.60826 68.54006
 [9] 69.40675 70.20950 70.94950 71.62807 72.24657 72.80648 73.30932 73.75668
[17] 74.15020 74.49138 74.78224 75.02434 75.21938 75.36934 75.47536 75.53934
[25] 75.56288 75.54757 75.49491 75.40640 75.28345 75.12745 74.93970

$mle
[1] 2.4

$ci
[1] 1.5 3.0
[1] 2.4
[1] 1.5 3.0

Usando la familia de transformaciones BoxCox, nos sugiere un valor de lambda = 2. Datos al cuadrado

Ahora parece que las oscilaciones no crecen con el tiempo.

Paso 3. Transformaciones para que la media sea estable en el tiempo

[1] 0
[1] 1

Diferencia estacional:

[1] 0

Paso 4. Contrastar la estacionariedad

Test de raiz unitaria.


    Augmented Dickey-Fuller Test

data:  tsSM3_MensualTransfDif
Dickey-Fuller = -2.6388, Lag order = 2, p-value = 0.329
alternative hypothesis: stationary

Los datos no son estacionarios

AnĂ¡lisis de series temporales con metodologĂ­a Box-Jenkis

Paso 1. Lectura y representaciĂ³n grĂ¡fica de los datos

Paso 2. Transformaciones para que la varianza sea estable en el tiempo

$lambda
 [1] -2.0 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1.0 -0.9 -0.8 -0.7 -0.6
[16] -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9
[31]  1.0  1.1  1.2  1.3  1.4  1.5  1.6  1.7  1.8  1.9  2.0

$loglike
 [1]  40.41714  49.70541  58.70562  67.39835  75.76458  83.78614  91.44630
 [8] 101.83094 108.87858 115.51343 121.72737 130.88686 136.60423 141.89554
[15] 146.76202 151.20925 155.24692 158.88832 162.14974 165.04970 167.60816
[22] 169.84573 171.78305 173.44024 174.83650 175.98980 176.91676 177.63258
[29] 178.15104 178.48455 178.64424 178.64010 178.48108 178.17518 177.72962
[36] 177.15091 176.44494 175.61708 174.67228 173.61506 172.44964

$mle
[1] 1

$ci
[1] 0.6 1.5
[1] 1
[1] 0.6 1.5

Usando la familia de transformaciones BoxCox, nos sugiere un valor de lambda = 1.

No transformamos los datos.

Paso 3. Transformaciones para que la media sea estable en el tiempo

[1] 1
[1] 0

Diferencia regular:

[1] 0

Paso 4. Contrastar la estacionariedad

Test de raiz unitaria.


    Augmented Dickey-Fuller Test

data:  tsSM3_DiariaEneroDif
Dickey-Fuller = -4.6528, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary

No existen evidencias significativas para afirmar que los datos no sean estacionarios. La media es estable en el tiempo.

Muelle

Paso 5. Identificar la estructura ARIMA

Pasos 6 y 7. EstimaciĂ³n de parĂ¡metros y diagnĂ³stico

modelo ARIMA(0,1,0)xARIMA(0,1,0)

        2.5 %     97.5 %
ma1 -1.085034 -0.9149655

Call:
arima(x = tsSM3_DiariaEnero, order = c(0, 1, 1), seasonal = list(order = c(0, 
    0, 0), period = 31))

Coefficients:
          ma1
      -1.0000
s.e.   0.0434

sigma^2 estimated as 9218630:  log likelihood = -870.5,  aic = 1743

No hay coeficientes significativamente no nulos. Modelo: ARIMA(0,1,1)x(0,0,0)


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 42.097, df = 18, p-value = 0.001072

Model df: 1.   Total lags used: 19

Pasa la diagnosis: p-value = 0.001072. El modelo es vĂ¡lido.

Series: tsSM3_DiariaEnero 
ARIMA(2,1,1)(1,0,0)[31] 

Coefficients:
          ar1      ar2      ma1     sar1
      -0.4695  -0.4003  -0.4286  -0.0117
s.e.   0.1675   0.1299   0.1829   0.1403

sigma^2 = 9691406:  log likelihood = -869.07
AIC=1748.14   AICc=1748.83   BIC=1760.75

Modelo propuesto: ARIMA(2,1,1)(1,0,0)[31]

aicAutoArima = 1748.14 AICModelo1 = aic = 1743


    Ljung-Box test

data:  Residuals from ARIMA(2,1,1)(1,0,0)[31]
Q* = 25.83, df = 15, p-value = 0.03985

Model df: 4.   Total lags used: 19

Pasa la diagnosis: 0.03985

Nos quedamos con el modelo 1.

Paso 8. PredicciĂ³n de los resultados